home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Shareware Grab Bag
/
Shareware Grab Bag.iso
/
095
/
rbbs_src.arc
/
CNFG-SUB.BAS
< prev
next >
Wrap
BASIC Source File
|
1987-06-07
|
65KB
|
1,522 lines
' $linesize:132
' $title: 'CNFG-SUB.BAS CPC15-1B, Copyright 1987 by D. Thomas Mack'
' Copyright 1987 by D. Thomas Mack, all rights reserved.
' Name ...............: CNFG-SUB.BAS
' Written by .........: D. Thomas Mack
' First Released .....: March 15, 1987
' Subsequent Releases.: June 7, 1987
' Copyright ..........: 1987
' Purpose.............: The Remote Bulletin Board System for the IBM PC,
' RBBS-PC, configuration program -- CONFIG.BAS
' utilizes a lot of menus and string space.
' These are incorporated within CNFG-SUB.BAS as a
' seperately callable subroutines in order to free
' up as much code as possible within the 64K code
' segment used by CONFIG.BAS.
' Parameters..........: Most parameters are passed via a COMMON statement.
'
' Subroutine Line Function of Subroutine
' Name Number
' ALLCAPS 61212+ Captialize a string
' ANYINTEGER 61450 Prompt for any integer
' ANYNUMBER 61400 Prompt for any number
' ASKRO 61000 Ask a question on a specific row
' ASKUPS 61300 Ask for identifying field in USERS record
' CHKFMSDIR 61700 Check FMS directory for valid structure
' CNFGINIT 60385 Initialize CONFIG's constants
' DISPLAY 12190 Display the CONFIG menu pages
' FINDFILE 61600 Determine whether a file exists
' GETNUMYN 61150 Get TRUE/FALSE answer to a YES/NO question
' GETYESNO 61200 Ask a question with a "yes" or "no" response
' MMINTEGER 61500 Prompt for integer with min and a max
' REMOVE 61800 Remove characters from a string
'
' $INCLUDE: 'CNFG-VAR.BAS'
'
' $SUBTITLE: 'DISPLAY - subroutine to display CONFIG's menus'
' $PAGE
'
' SUBROUTINE NAME -- DISPLAY
'
' INPUT PARAMETERS -- PARAMETER DESCRIPTION
' IX = 0 DISPLAY THE CHOICE OF MENUS
' IX = -1 RE-READ THE INPUT (INVALID REQUEST)
' IX > 0 DISPLAY THE APPROPRIATE PAGE
'
' OUTPUT PARAMETERS -- HJ$ OPTION SELECTED
' IPAGE MENU PAGE CONTAINING OPTION
' ILOOKUP INDEX (1 TO 20) OF OPTION SELECTED
'
' SUBROUTINE PURPOSE -- TO DISPLAY CONFIG'S MENUS AND REQUEST OPTION
'
SUB DISPLAY STATIC
'
' *****************************************************************************
' * DISPLAY CONFIG'S MAIN FUNCTION KEY MENU *
' *****************************************************************************
'
IF IX > 0 THEN _
GOTO 12320
IF IX = -1 THEN _
GOTO 12590
12190 COLOR FG,BG,BORDER
CLS
DISPLAYED.PAGE.NUMBER = 0
I! = FRE(C$)
COLOR 0,7,0
LOCATE 4,10
PRINT "RBBS-PC CPC15.1 CONFIGURATION PROGRAM " + CONFIG.VERSION$
COLOR FG,BG,BORDER
LOCATE 1,1,0
PRINT "Copyright (c) 1983-1987 Tom Mack"
LOCATE 2,1,0
PRINT "10210 Oxfordshire Rd., Great Falls, VA 22066";
IF F THEN _
GOSUB 24970
LOCATE 5,2
PRINT " F1 Global RBBS-PC Parameters (part 1)
LOCATE 6,2
PRINT " F2 Global RBBS-PC Parameters (part 2)
LOCATE 7,2
PRINT " F3 Global RBBS-PC Parameters (part 3)
LOCATE 8,2
PRINT " F4 Parameters for static RBBS-PC Files
LOCATE 9,2
PRINT " F5 Parameters for dynamic RBBS-PC's Files
LOCATE 10,2
PRINT " F6 Parameters for RBBS-PC's 'Doors'
LOCATE 11,2
PRINT " F7 Parameters for RBBS-PC's Security
LOCATE 12,2
PRINT " F8 Parameters for multiple RBBS-PC's
LOCATE 13,2
PRINT " F9 RBBS-PC utilities
LOCATE 14,2
PRINT " F10 RBBS-PC File Management Faciliites"
LOCATE 15,2
PRINT " Shift-F1 RBBS-PC Communications Parameters"
LOCATE 16,2
PRINT " Shift-F2 Parameters for RBBS-PC NET-MAIL
LOCATE 17,2
PRINT " Shift-F3 New users parameters"
LOCATE 18,2
PRINT " Shift-F4 Reserved for future use"
LOCATE 19,2
PRINT " Shift-F5 Reserved for future use"
LOCATE 20,2
PRINT " Shift-F6 Reserved for future use"
LOCATE 21,2
PRINT " Shift-F7 Reserved for future use"
LOCATE 22,2
PRINT " Shift-F8 Reserved for future use"
XX$ = "Press END to terminate or Function Key to select page for parameters shown "
GOSUB 50345
LOCATE ,,1
12310 GOSUB 22160
12320 IF IX THEN _ 'IX Key Where to branch to
ON IX GOTO 12360, _ ' 1 F1 - Global Parameters (Part 1)
12370, _ ' 2 F2 - Global Parameters (Part 2)
12380, _ ' 3 F3 - Global Parameters (Part 3)
12390, _ ' 4 F4 - Static RBBS-PC Files
12400, _ ' 5 F5 - Dynamic RBBS-PC Files
12410, _ ' 6 F6 - RBBS-PC "doors"
12420, _ ' 7 F7 - RBBS-PC security parameters
12470, _ ' 8 F8 - Multiple RBBS-PC parameters
12480, _ ' 9 F9 - RBBS-PC's utilities
12490, _ '10 F10 - RBBS-PC File Manager
12500, _ '11 Shift-F1 - RBBS-PC communications parameters
12510, _ '12 Shift-F2 - RBBS-PC Net Mail
12520, _ '13 Shift-F3 - New user parameters
12310, _ '14 Shift-F4 - Reserved for future use
12310, _ '15 Shift-F5 - Reserved for future use
12310, _ '16 Shift-F6 - Reserved for future use
12310, _ '17 Shift-F7 - Reserved for future use
12310, _ '18 Shift-F8 - Reserved for future use
12340, _ '19 PgUp - Go to previous page
12330, _ '20 PgDn - Go to next page
12630, _ '21 End - Terminate CONFIG
12350 '22 Enter - Re-display current page
GOTO 12310
'
' *****************************************************************************
' * COMMON ROUTINE TO HANDLE UNDEFINED OPTIONS *
' *****************************************************************************
'
12325 IX = IPAGE
GOTO 12320
'
' *****************************************************************************
' * COMMON ROUTINE TO HANDLE PAGE UP OF DISPLAYS *
' *****************************************************************************
'
12330 IF (DISPLAYED.PAGE.NUMBER + 1 ) > 13 THEN _
GOTO 12190
IX = DISPLAYED.PAGE.NUMBER + 1
GOTO 12320
'
' *****************************************************************************
' * COMMON ROUTINE TO HANDLE PAGE DOWN OF DISPLAYS *
' *****************************************************************************
'
12340 IF (DISPLAYED.PAGE.NUMBER - 1) < 1 THEN _
GOTO 12190
IX = DISPLAYED.PAGE.NUMBER - 1
GOTO 12320
'
' *****************************************************************************
' * RETURN TO PRIMARY MENU SELECTION DISPLAY *
' *****************************************************************************
'
12350 GOSUB 60380
GOTO 12310
'
' *****************************************************************************
' * COMMON CONFIGURATION PROGRAM MENU AND PAGE DISPLAY *
' *****************************************************************************
'
12360 DISPLAYED.PAGE.NUMBER = 1
GOSUB 24800
LOCATE 3,10
PRINT " 1. SYSOP's First Name --------------------------- " + SYSOP.FIRST.NAME$
LOCATE 4,10
PRINT " 2. SYSOP's Last Name ---------------------------- " + SYSOP.LAST.NAME$
LOCATE 5,10
PRINT " 3. Password #1 for SYSOP to sign on remotely ---- " + MN1$
LOCATE 6,10
PRINT " 4. Password #2 for SYSOP to sign on remotely----- " + MN2$
LOCATE 7,10
PRINT " 5. Password for SYSOP to sign on locally -------- " + LOCAL.PASSWORD$
LOCATE 8,10
PRINT " 6. SYSOP's default sign-on mode ----------------- " + EXPERT.USER$
LOCATE 9,10
PRINT " 7. SYSOP's office hours -------------------------"STR$(START.OFFICE.HOURS);" to"STR$(END.OFFICE.HOURS)
LOCATE 10,10
PRINT " 8. Page SYSOP using printer's bell -------------- " + M11$
LOCATE 11,10
PRINT " 9. Deny access to callers who use 300 baud ------ " + RESTRICT.BAUD$
LOCATE 12,10
PRINT "10. Are you using ANSI.SYS with a color monitor -- " + USE.COLOR$
LOCATE 13,10
PRINT "11. Go off-line whenever a DISK FULL occurs ------ " + DISKFULL.GO.OFFLINE$
LOCATE 14,10
PRINT "12. Prompt bell default is ----------------------- " + PROMPT.BELL$
LOCATE 15,10
PRINT "13. Maximum time per session (in minutes) --------"STR$(MINUTES.PER.SESSION!)
LOCATE 16,10
PRINT "14. Limit each user to" + STR$(MINUTES.PER.SESSION!) + " minutes/day? " + STRING$((14-LEN(STR$(MINUTES.PER.SESSION!))),45) + " " + LIMIT.DAILY.TIME$
LOCATE 17,10
PRINT "15. # Months of inactivity before user deleted ---"STR$(ACT.MNTHS.B4.DELETING)
LOCATE 18,10
PRINT "16. Name of RBBS-PC shown initially is ----------- " + RBBS.NAME$
LOCATE 19,10
PRINT "17. Foreground color (for color monitors) is -----"STR$(FG)
LOCATE 20,10
PRINT "18. Background color (for color monitors) is -----"STR$(BG)
LOCATE 21,10
PRINT "19. The border color (for color monitors) is -----"STR$(BORDER)
LOCATE 22,10
PRINT "20. Users that can elect to bypass messages ------ " + NOT.YET.IN$ ' SL.TO.BYPASS.MSGS
GOTO 12580
12370 DISPLAYED.PAGE.NUMBER = 2
GOSUB 24800
LOCATE 3,10
PRINT "21. Remind users of messages that they left ------ " + MESSAGE.REMINDER$
LOCATE 4,10
PRINT "22. Remind users of # uploads and downloads? ----- " + REMIND.FILE.TRANSFERS$
LOCATE 5,10
PRINT "23. Remind users of their terminal profile? ------ " + REMIND.PROFILE$
LOCATE 6,10
PRINT "24. Default user page length is ------------------" + STR$(PAGE.LENGTH)
LOCATE 7,10
PRINT "25. Maximum number of lines allowed per message --" + STR$(MAX.MESSAGE.LINES)
LOCATE 8,10
PRINT "26. Require non-ascii protocol for BASIC files --- " + REQUIRE.NON.ASCII$
LOCATE 9,10
PRINT "27. Factor to extend session time for uploads ----" + STR$(UPLOAD.TIME.FACTOR!)
LOCATE 10,10
PRINT "28. Name of required questionnaire --------------- " + REQUIRED.QUESTIONNAIRE$
LOCATE 11,10
PRINT "29. Is system 'welcome' interruptable? ----------- " + WELCOME.INTERRUPTABLE$
LOCATE 12,10
PRINT "30. Are system bulletins to be 'optional'? ------- " + BULLETINS.OPTIONAL$
LOCATE 13,10
PRINT "31. Type of PC RBBS-PC will be running on? ------- " + COMPUTER.TYPE$
LOCATE 14,10
PRINT "32. Symbols to use for SYSOP commands ------------ " + SYSOP.COMMANDS$
LOCATE 15,10
PRINT "33. Symbols to use for MAIN menu commands -------- " + MAIN.COMMANDS$
LOCATE 16,10
PRINT "34. Symbols to use for FILE menu commands -------- " + FILE.COMMANDS$
LOCATE 17,10
PRINT "35. Symbols to use for UTILITIES menu commands --- " + UTIL.COMMANDS$
LOCATE 18,10
PRINT "36. Symbols to use for global commands ----------- " + GLOBAL.COMMANDS$
LOCATE 19,10
PRINT "37. Show section in command prompt --------------- " + SHOW.SECTION$
LOCATE 20,10
PRINT "38. Show commands in command prompt -------------- " + COMMANDS.IN.PROMPT$
LOCATE 21,10
PRINT "39. Use machine language routines for speed ------ " + TURBO.RBBS$
LOCATE 22,10
PRINT "40. Restrict valid commands to current section --- " + FNYESNO$(RESTRICT.VALID.CMDS)
GOTO 12580
12380 DISPLAYED.PAGE.NUMBER = 3
GOSUB 24800
LOCATE 3,10
PRINT "41. Field used to identify users ----------------- " + HASH.ID$
LOCATE 4,10
PRINT "42. Field used to distinguish users with same ID-- " + INDIV.ID$
LOCATE 5, 10
PRINT "43. RESTRICT users by SUBSCRIPTION date ---------- " + RESTRICT.BY.DATE$
LOCATE 6,10
PRINT "44. Security level when SUBSCRIPTION expires -----" + STR$(EXPIRED.SECURITY)
LOCATE 7,10
PRINT "45. Days before expiration to warn callers -------" + STR$(DAYS.TO.WARN)
LOCATE 8,10
PRINT "46. Default # days in SUBSCRIPTION PERIOD --------" + STR$(DAYS.IN.SUBSCRIPTION.PERIOD)
LOCATE 9,10
PRINT "47. Turn printer off after each recycle ---------- " + TURN.PRINTER.OFF$
LOCATE 10,10
PRINT "48. Play musical themes for RBBS functions ------- " + MUSIC$
LOCATE 11,10
PRINT "49. BUFFER SIZE used when displaying text files --" + STR$(BUFFER.SIZE)
LOCATE 12,10
PRINT "50. File shown users when SYSOP wants system next " + NOT.YET.IN$ ' F7.MESSAGE$
LOCATE 13,10
PRINT "51. Call-back verification ----------------------- " + NOT.YET.IN$ ' CALLBACK.VERIFICATION$
LOCATE 14,10
PRINT "52. On a unrecoverable error --------------------- " + NOT.YET.IN$ ' HALT.ON.ERROR$
GOTO 12580
12390 DISPLAYED.PAGE.NUMBER = 4
GOSUB 24800
IF INSTR(DRIVE.FOR.BULLETINS$,":") < 1 THEN _
DRIVE.FOR.BULLETINS$ = DRIVE.FOR.BULLETINS$ + ":"
LOCATE 3,10
PRINT "61. Drive and file describing 'bulletins' is ----- " + DRIVE.FOR.BULLETINS$ + BULLETIN.MENU$
LOCATE 4,10
PRINT "62. Number of active 'bulletins' -----------------" + STR$(ACTIVE.BULLETINS)
LOCATE 5,10
PRINT "63. Prefix used to name bulletin files is -------- " + BULLETIN.PREFIX$
LOCATE 6,10
PRINT "64. Drive and path (optional) for 'help' files --- " + HELP.PATH$
LOCATE 7,10
PRINT "65. Prefix used to name four major 'help' files -- " + HELP.FILE.PREFIX$
LOCATE 8,10
PRINT "66. Extension for help files of individual cmds -- " + HELP.EXTENSION$
LOCATE 9,10
PRINT "67. HELP file when callers CATEGORIZE uploads ---- " + UPCAT.HELP$
LOCATE 10,10
PRINT "68. Name of 'newuser' file shown to new users ---- " + NEWUSER.FILE$
LOCATE 11,10
PRINT "69. Name of 'welcome' file shown at logon -------- " + WELCOME.FILE$
LOCATE 12,10
PRINT "70. The SYSOP's command menu is named ------------ " + MENU$(1)
LOCATE 13,10
PRINT "71. The MAIN system menu is named ---------------- " + MENU$(2)
LOCATE 14,10
PRINT "72. The file subsystem menu is named ------------- " + MENU$(3)
LOCATE 15,10
PRINT "73. The utilities subsystem menu is named -------- " + MENU$(4)
LOCATE 16,10
PRINT "74. Menu that lists available conferences is ----- " + CONFERENCE.MENU$
LOCATE 17,10
PRINT "75. Menu that lists questionnaires available is -- " + ANS.MENU$
LOCATE 18,10
PRINT "76. File containing invalid user names ----------- " + TRASHCAN.FILE$
GOTO 12580
12400 DISPLAYED.PAGE.NUMBER = 5
GOSUB 24800
LOCATE 3,10
PRINT "81. System file containing messages is named ----- " + MAIN.MESSAGE.FILE$
LOCATE 4,10
PRINT "82. System file for recording users is named ----- " + MAIN.USER.FILE$
LOCATE 5,10
PRINT "83. System file for comments to SYSOP is named --- " + COMMENTS.FILE$
LOCATE 6,10
PRINT "84. Record comments as private messages ---------- " + COMMENTS.AS.MESSAGES$
LOCATE 7,10
PRINT "85. System file for 'callers' is named ----------- " + CALLERS.FILE$
LOCATE 8,10
PRINT "86. Extended logging to 'callers' file ----------- " + EXTENDED.LOGGING$
LOCATE 9,10
PRINT "87. Wrap-around the 'callers' file --------------- " + NOT.YET.IN$ ' WRAP.CALLERS.FILE$
GOTO 12580
12410 DISPLAYED.PAGE.NUMBER = 6
GOSUB 24800
LOCATE 3,9
PRINT "101. Is the 'door' subystem available? ------------ " + DOORS.AVAILABLE$
LOCATE 4,9
PRINT "102. The 'door' subsystem menu is named ----------- " + MENU$(5)
LOCATE 5,9
PRINT "103. File RBBS builds dynamically to open a 'door'- " + RCTTY.BAT$
LOCATE 6,9
PRINT "104. When a 'door' closes, file to re-invoke RBBS - " + RBBS.BAT$
LOCATE 7,9
PRINT "105. Drive to look for COMMAND.COM on ------------- " + DISK.FOR.DOS$
LOCATE 8,9
PRINT "106. Use the Dos 'CTTY' command to redirect I/O --- " + REDIRECT.IO.METHOD$
LOCATE 9,9
PRINT "107. Invoke RBBS 'drivers' via ... ---------------- " + GO.TO.SHELL$
GOTO 12580
12420 DISPLAYED.PAGE.NUMBER = 7
GOSUB 24800
LOCATE 3,9
PRINT "121. Minimum security level to get onto RBBS -------" + STR$(MINIMUM.LOGON.SECURITY)
LOCATE 4,9
PRINT "122. Default security level for new callers --------" + STR$(DEFAULT.SECURITY.LEVEL)
LOCATE 5,9
PRINT "123. Security level for SYSOP ----------------------" + STR$(SYSOP.SECURITY.LEVEL)
LOCATE 6,9
PRINT "124. Files with download security are listed in ---- " + FILESEC.FILE$
LOCATE 7,9
PRINT "125. Minimum security level to see SYSOP's menu ----" + STR$(SYSOP.MENU.SECURITY.LEVEL)
LOCATE 8,9
PRINT "126. Minimum security level to use RBBS-PC 'doors'--" + STR$(DOORS.SECURITY.LEVEL)
LOCATE 9,9
PRINT "127. Max # security violations before disconnect ---" + STR$(MAXIMUM.VIOLATIONS)
M22$ = STR$(SF)
IX = SYSOP.FUNCTION(1)
FOR I = 2 TO NUM.SYSOP
IF IX <> SYSOP.FUNCTION(I) THEN _
M22$ = "(Variable)" : _
GOTO 12430 ' CPC15-1B
NEXT
12430 LOCATE 10,9
PRINT "128. Security level for SYSOP functions ------------" + M22$
M23$ = STR$(MM)
IX = MAIN.FUNCTION(1)
FOR I = 2 TO NUM.MAIN
IF IX<>MAIN.FUNCTION(I) THEN _
M23$ = "(Variable)" : _
GOTO 12440
NEXT ' CPC15-1B
12440 LOCATE 11,9
PRINT "129. Security level for main menu functions --------" + M23$
M24$ = STR$(FC)
IX = FILES.FUNCTION(1)
FOR I = 2 TO NUM.FILES
IF IX<>FILES.FUNCTION(I) THEN _
M24$ = "(Variable)" : _
GOTO 12450 ' CPC15-1B
NEXT
12450 LOCATE 12,9
PRINT "130. Security level for file menu functions --------" + M24$
M25$ = STR$(UE)
IX = UTILITY.FUNCTION(1)
FOR I = 2 TO NUM.UTILITY
IF IX<>UTILITY.FUNCTION(I) THEN _
M25$ = "(Variable)" : _
GOTO 12460 ' CPC15-1B
NEXT
12460 LOCATE 13,9
PRINT "131. Security level for utilities menu functions ---" + M25$
M26$ = STR$(GB)
IX = GLOBAL.FUNCTION(1)
FOR I = 1 TO NUM.GLOBAL
IF IX<>GLOBAL.FUNCTION(I) THEN _
M26$ = "(Variable)" : _
GOTO 12465 ' CPC15-1B
NEXT
12465 LOCATE 14,9
PRINT "132. Security level for GLOBAL commands ------------" + M26$
LOCATE 15,9
PRINT "133. File with privileged group passwords is named-- "+ PASSWORD.FILE$
LOCATE 16,9
PRINT "134. Max # of password changes in a session --------" + STR$(MAXIMUM.PASSWORD.CHANGES)
LOCATE 17,9
PRINT "135. Min. security level for temp. password changes-" + STR$(MINIMUM.SECURITY.FOR.TEMP.PASSWORD)
LOCATE 18,9
PRINT "136. Min. security level to overwrite on uploads ---" + STR$(OVERWRITE.SECURITY.LEVEL)
LOCATE 19,9
PRINT "137. User's security exempted from 'packing' -------" + STR$(SEC.LVL.EXEMPT.FRM.PURGING)
LOCATE 20,9
PRINT "138. Security level assigned new public messages --- " + NOT.YET.IN$ ' STR$(NEW.PUBLIC.MSGS.SECURITY)
LOCATE 21,9
PRINT "139. Security level assigned new private messages -- " + NOT.YET.IN$ ' STR$(NEW.PRIVATE.MSGS.SECURITY)
LOCATE 22,9
PRINT "140. Security able to revise a message's security -- " + NOT.YET.IN$ ' STR$(SECURITY.NEEDED.TO.CHANGE.MSGS)
GOTO 12580
12470 DISPLAYED.PAGE.NUMBER = 8
GOSUB 30040
MAX.USR.FILE.SIZE.FRM.DEF = HIGHEST.USER.RECORD
MAX.MSG.FILE.SIZE.FRM.DEF! = HIGHEST.MESSAGE.RECORD
MAX.ALLOWED.MSGS.FRM.DEF = MAXIMUM.NUMBER.OF.MSGS
GOSUB 24800
LOCATE 3,9
PRINT "141. Maximum number of concurrent RBBS-PC's -------" + STR$(MAXIMUM.NUMBER.OF.NODES)
IF MAXIMUM.NUMBER.OF.NODES = 1 THEN _
MT$ = "single RBBS-PC copy " ELSE _
MT$ = "concurrent RBBS-PC's" : _
GOSUB 21900 : _
IF NETWORK.TYPE < 0 OR NETWORK.TYPE > 5 THEN _ ' CPC15-1B
GOTO 21810
LOCATE 4,9
PRINT "142. Environment running " + MT$ + " ------ " + NETWORK.TYPE$
LOCATE 5,9
PRINT "143. RBBS-PC 'recycle' method when users log off --- " + RECYCLE.TO.DOS$
FILE$ = MAIN.MESSAGE.FILE$
GOSUB 30180
MAX.MSG.FILE.SIZE.FRM.DEF! = UG
LOCATE 6,9
PRINT "144. Number of records in the " + MAIN.USER.FILE$ + " file " + STRING$(16-LEN(MAIN.USER.FILE$),"-");STR$(MAX.USR.FILE.SIZE.FRM.DEF)
LOCATE 7,9
PRINT "145. Number of records in " + MAIN.MESSAGE.FILE$ + " file " + STRING$(20-LEN(MAIN.MESSAGE.FILE$),"-");STR$(MAX.MSG.FILE.SIZE.FRM.DEF!)
LOCATE 8,9
PRINT "146. Maximum number of messages allowed ------------" + STR$(MAX.ALLOWED.MSGS.FRM.DEF)
LOCATE 9,9
PRINT "147. Conference File Maintenance.
GOTO 12580
12480 DISPLAYED.PAGE.NUMBER = 9
GOSUB 24800
RB = 0
LOCATE 3,9
PRINT "161. Pack " + MAIN.MESSAGE.FILE$ + " file.
LOCATE 4,9
PRINT "162. Rebuild " + MAIN.USER.FILE$ + " file.
LOCATE 5,9
PRINT "163. Print " + MAIN.MESSAGE.FILE$ + " 'header' records.
LOCATE 6,9
PRINT "164. Renumber messages in " + MAIN.MESSAGE.FILE$ + " file.
LOCATE 7,9
PRINT "165. Repair messages in " + MAIN.MESSAGE.FILE$ + " file.
LOCATE 8,9
PRINT "166. Make all users answer required questionnaire."
LOCATE 9,9
PRINT "167. Check FMS directory structure."
GOTO 12580
12490 DISPLAYED.PAGE.NUMBER = 10
GOSUB 24800
LOCATE 3,9
PRINT "181. Drive available for Uploading ---------------- " + DRIVE.FOR.UPLOADS$
LOCATE 4,9
PRINT "182. Name of directory for uploading -------------- " + UPLOAD.DIRECTORY$
LOCATE 5,9
PRINT "183. Drive/path where Upload Directory stored ----- " + UPLOAD.PATH$
LOCATE 6,9
PRINT "184. Drive(s) available for Downloading ----------- " + DRIVES.FOR.DOWNLOADS$
LOCATE 7,9
PRINT "185. Will you be using DOS sub-directories? ------- " + WILL.SUBDIRS.B.USED$
LOCATE 8,9
PRINT "186. Write Uploads to a DOS sub-directory? -------- " + UPLOAD.TO.SUBDIR$
LOCATE 9,9
PRINT "187. Are downloads from DOS sub-directories? ------ " + DOWNLOAD.TO.SUBDIR$
LOCATE 10,9
PRINT "188. List, change, add, delete sub-directories."
LOCATE 11,9
PRINT "189. File directory ext. (name dir of directories)- " + DIRECTORY.EXTENTION$
LOCATE 12,9
PRINT "190. Omit directory of directories in N)ew command " + OMIT.MAIN.DIRECTORY$
LOCATE 13,9
IF ALWAYS.STREW.TO$ = "" OR _
ALWAYS.STREW.TO$ = "NONE" THEN _
PRINT "191. Do not copy upload descriptions to another file." _
ELSE PRINT "191. Copy all upload descriptions to -------------- " + ALWAYS.STREW.TO$
LOCATE 14,9
A$ = FMS.DIRECTORY$
IF FMS.DIRECTORY$ = "" THEN _
A$ = "[FMS is not active]"
PRINT "192. Name of File Management System directory is -- " + A$
LOCATE 15,9
PRINT "193. Min SECURITY to CATEGORIZE uploads -----------" + STR$(SL.CATEGORIZE.UPLOADS)
LOCATE 16,9
PRINT "194. Limit file searches to FMS directory only ---- " + LIMIT.SEARCH.TO.FMS$
LOCATE 17,9
PRINT "195. Default category code for uploads ------------ " + DEFAULT.CATEGORY.CODE$
LOCATE 18,9
PRINT "196. File containing valid directory categories --- " + DIR.CATEGORY.FILE$
LOCATE 19,9
PRINT "197. Enable download of new files at logon -------- " + NEW.FILES.CHECK$
LOCATE 20,9
PRINT "198. Max length of description of uploaded file -- " + STR$(MAX.DESC.LEN)
LOCATE 21,9
PRINT "199. Min security level to view new uploads ------ " + STR$(MIN.SEC.TO.VIEW)
LOCATE 22,9
PRINT "200. Drive and path (optional) for directory files " + DIRECTORY.PATH$
GOTO 12580
12500 DISPLAYED.PAGE.NUMBER = 11
GOSUB 24800
LOCATE 3,9
PRINT "201. Communications port to be used by RBBS-PC ---- " + COM.PORT$
LOCATE 4,9
PRINT "202. # of seconds to wait for modem to initialize -" + STR$(MODEM.INIT.WAIT.TIME)
LOCATE 5,9
PRINT "203. Seconds to wait before issuing modem commands-" + STR$(MODEM.COMMAND.DELAY.TIME)
LOCATE 6,9
PRINT "204. Number of rings to wait before answering -----" + STR$(REQUIRED.RINGS);
IF MID$(MODEM.INIT.COMMAND$,24,5) = "255 " THEN _
PRINT "RING BACK";
LOCATE 7,9
PRINT "205. Use the RBBS-PC default Hayes commands? ------ " + M14$
LOCATE 8,9
PRINT "206. Is MICROCOM's MNP protocol available? -------- " + MNP.SUPPORT$
LOCATE 9,9
PRINT "207. Issue modem commands between rings ----------- " + COMMANDS.BETWEEN.RINGS$
LOCATE 10,9
PRINT "208. Baud rate to initially open modem at --------- " + MODEM.INIT.BAUD$
LOCATE 11,9
PRINT "209. Seconds waited before logging off idle users -" + STR$(WAIT.BEFORE.DISCONNECT)
LOCATE 12,9
PRINT "210. Are you using a 'DUMB' auto-answer modem? ---- " + DUMB.MODEM$
LOCATE 13,9
PRINT "211. Initialize Hayes 2400 firmware for RBBS-PC."
LOCATE 14,9
PRINT "212. # seconds to wait after dropping DTR ---------" + STR$(DTR.DROP.DELAY)
LOCATE 15,9
PRINT "213. Drive/path where EXTERNAL PROTOCOL pgms stored " + PROTOCOL.PATH$
LOCATE 16,9
PRINT "214. Use Xmodem in external protocol programs ----- " + FNYESNO$(USE.EXTERNAL.XMODEM)
LOCATE 17,9
PRINT "215. Always check caller for AUTODOWNLOAD support - " + FNYESNO$(ASK.IDENTITY)
LOCATE 18,9
IF MASTER.DIRECTORY.NAME$ = "" THEN _
PRINT "216. Limit search for 'ALL' to non-FMS directory -- <none>" _
ELSE PRINT "216. Limit search for 'ALL' to non-FMS directory -- " + MASTER.DIRECTORY.NAME$
LOCATE 19,9
PRINT "217. Is the modem a TDD (handles Baudot code)? ---- " + NOT.YET.IN$ ' BAUDOT$
LOCATE 20,9
PRINT "218. Modem flow control uses Request-to-Send (RTS)- " + RTS$ ' CPC15-1B
GOTO 12580
12510 DISPLAYED.PAGE.NUMBER = 12
GOSUB 24800
LOCATE 3,9
TIME.TO.DROP.TO.DOS$ = "None"
IF TIME.TO.DROP.TO.DOS > -1 THEN _
TIME.TO.DROP.TO.DOS$ = STRING$(4-(LEN(STR$(TIME.TO.DROP.TO.DOS))-1),"0") + MID$(STR$(TIME.TO.DROP.TO.DOS),2)
12512 PRINT "221. Time of day to exit to DOS ------------------- " + TIME.TO.DROP.TO.DOS$ ' CPC15-1B
LOCATE 4,9
PRINT "222. Net mail to invoke is ------------------------ " + NET.MAIL$ ' CPC15-1B
GOTO 12580
12520 DISPLAYED.PAGE.NUMBER = 13
GOSUB 24800
LOCATE 3,9
PRINT "241. Let new users set their preferences --------- " + NEWUSER.SETS.DEFAULTS$
LOCATE 4,9
PRINT "242. New users default sign-on mode -------------- " + NOT.YET.IN$ ' NEW.USER.DEFAULT.MODE$
LOCATE 5,9
PRINT "243. New users default file-transfer protocol ---- " + NOT.YET.IN$ ' NEW.USER.DEFAULT.PROTOCOL$
LOCATE 6,9
PRINT "244. Line feeds for new users default to --------- " + NOT.YET.IN$ ' NEW.USER.LINE.FEEDS$
LOCATE 7,9
PRINT "245. Nulls for new users default to -------------- " + NOT.YET.IN$ ' NEW.USER.NULLS$
LOCATE 8,9
PRINT "246. Prompt bell for new users defaults to ------- " + NOT.YET.IN$ ' NEW.USER.BELL$
LOCATE 9,9
PRINT "247. New users 'graphics' capability is assumed -- " + NOT.YET.IN$ ' NEW.USER.GRAPHICS$
LOCATE 10,9
PRINT "248. New users are assumed UPPERCASE only -------- " + NOT.YET.IN$ ' NEW.USER.CASE$
LOCATE 11,9
PRINT "249. New users message margins defaults to ------- " + NOT.YET.IN$ ' STR$(NEW.USER.MARGINS)
LOCATE 12,9
PRINT "250. Add new users to USERS file ----------------- " + REMEMBER.NEW.USERS$
LOCATE 13,9
PRINT "251. Let new users on even when USERS file full -- " + SURVIVE.NOUSER.ROOM$
GOTO 12580
12530 DISPLAYED.PAGE.NUMBER = 14
GOSUB 24800
GOTO 12580
12540 DISPLAYED.PAGE.NUMBER = 15
GOSUB 24800
GOTO 12580
12550 DISPLAYED.PAGE.NUMBER = 16
GOSUB 24800
GOTO 12580
12560 DISPLAYED.PAGE.NUMBER = 17
GOSUB 24800
GOTO 12580
12570 DISPLAYED.PAGE.NUMBER = 18
GOSUB 24800
GOTO 12580
12580 GOSUB 24890
12590 GOSUB 22160
IF IX THEN _ 'IX Key Where to branch to
ON IX GOTO 12360, _ ' 1 F1 - Global Parameters (Part 1)
12370, _ ' 2 F2 - Global Parameters (Part 2)
12380, _ ' 3 F3 - Global Parameters (Part 3)
12390, _ ' 4 F4 - Static RBBS-PC Files
12400, _ ' 5 F5 - Dynamic RBBS-PC Files
12410, _ ' 6 F6 - RBBS-PC "doors"
12420, _ ' 7 F7 - RBBS-PC security parameters
12470, _ ' 8 F8 - Multiple RBBS-PC parameters
12480, _ ' 9 F9 - RBBS-PC's utilities
12490, _ '10 F10 - RBBS-PC File Manager
12500, _ '11 Shift-F1 - RBBS-PC communications parameters
12510, _ '12 Shift-F2 - RBBS-PC Net Mail
12520, _ '13 Shift-F3 - New user parameters
12310, _ '14 Shift-F4 - Reserved for future use
12310, _ '15 Shift-F5 - Reserved for future use
12310, _ '16 Shift-F6 - Reserved for future use
12310, _ '17 Shift-F7 - Reserved for future use
12310, _ '18 Shift-F8 - Reserved for future use
12340, _ '19 PgUp - Go to previous page
12330, _ '20 PgDn - Go to next page
12630, _ '21 End - Terminate CONFIG
12620 '22 Enter - Option selected followed by "enter"
GOTO 12590
12620 GOSUB 50340
IF VAL(HJ$) < 1 OR VAL(HJ$) > 260 THEN _
GOTO 12580
IPAGE = INT(VAL(HJ$)/20)
ILOOKUP = VAL(HJ$) - (20*IPAGE)
IPAGE = IPAGE + 1
IF ILOOKUP < 1 THEN _
ILOOKUP = 20 : _
IPAGE = IPAGE - 1
12630 EXIT SUB
'
' *****************************************************************************
' * IDENTIFY THE NETWORK TYPES THAT RBBS-PC CAN RUN IN *
' *****************************************************************************
'
21810 CLS
LOCATE 3,5
PRINT "RBBS-PC is supported in the following:"
LOCATE 5,20
PRINT "Environment"
LOCATE 7,10
PRINT "0. Single RBBS-PC in an IBM DOS environment"
LOCATE 9,10
PRINT "1. MultiLink (multi-tasking under single DOS)
LOCATE 11,10
PRINT "2. Omninet (CORVUS)"
LOCATE 13,10
PRINT "3. PC-NET (Orchid)"
LOCATE 15,10
PRINT "4. DESQview (Quarterdeck)"
LOCATE 17,10
PRINT "5. 10 NET (Fox Research)" ' CPC15-1B
LOCATE 19,10 ' CPC15-1B
PRINT "6. IBM DOS (3.1 or above) file sharing not supported" ' CPC15-1B
21870 GOSUB 50340
XX$ = "Select environment (0 to 6, ENTER to end)" ' CPC15-1B
GOSUB 50345
LINE INPUT;X$
IF X$ = "" THEN _
RETURN
NETWORK.TYPE = VAL(X$)
GOSUB 21890
RETURN
21890 IF NETWORK.TYPE < 0 OR NETWORK.TYPE > 6 THEN _ ' CPC15-1B
GOTO 21870 ' CPC15-1B
21895 IF NETWORK.TYPE = 0 THEN _
NETWORK.TYPE$ = "IBM's DOS
21900 IF NETWORK.TYPE = 1 THEN _
NETWORK.TYPE$ = "MultiLink
IF NETWORK.TYPE = 2 THEN _
NETWORK.TYPE$ = "Omninet
IF NETWORK.TYPE = 3 THEN _
NETWORK.TYPE$ = "PC-NET
IF NETWORK.TYPE = 4 THEN _
NETWORK.TYPE$ = "DESQview"
IF NETWORK.TYPE = 5 THEN _ ' CPC15-1B
NETWORK.TYPE$ = "10 NET" ' CPC15-1B
IF NETWORK.TYPE = 6 THEN _ ' CPC15-1B
NETWORK.TYPE$ = "IBM's file sharing -- future"
RETURN
'
' *****************************************************************************
' * COMMON SUBROUTINE TO HANDLE THE FUNCTION KEYS, SCROLL BETWEEN CONFIG'S *
' * PAGES OF OPTIONS, AND USER'S SELECTING A NUMERIC 4-CHARACTER OPTION. *
' *****************************************************************************
'
22160 I! = FRE(C$)
Y$ = INKEY$
IX = 0
IF LEN(Y$) < 1 THEN _
GOTO 22160
IF LEN(Y$) = 2 THEN _ ' IF A FUNCTION KEY, BRANCH
GOTO 22240
IF ASC(Y$) = 13 THEN _ ' IF A CARRIAGE RETURN, RETURN
IX = 22 : _
RETURN
IF ASC(Y$) = 8 AND LEN(HJ$) > 0 THEN _
HJ$ = LEFT$(HJ$,LEN(HJ$)-1) : _
PRINT CHR$(29) + " " + CHR$(29); : _
GOTO 22160
IF ASC(Y$) < 48 OR ASC(Y$) > 57 THEN _
GOTO 22160
PRINT Y$;
HJ$ = HJ$ + Y$
OPTION$ = HJ$
IF LEN(HJ$) > 4 THEN _ ' IF MORE THAN FOUR CHARACTERS,
IX = 22 ' RETURN
RETURN
'
' *****************************************************************************
' * COMMON SUBROUTINE TO HANDLE SET UP RETURN CODES FOR FUNCTION KEYS THAT *
' * WERE PRESSED ON THE LOCAL PC RUNNING CONFIG *
' *****************************************************************************
'
22240 IX = ASC(RIGHT$(Y$,1))
Y$ = "
IF IX < 59 OR IX > 91 THEN _ ' IGNORE IF NOT F1 THROUGH F10 OR
IX = 0: _ ' SHIFT-F1 THROUGH SHIFT-F8
RETURN
IF IX = 73 THEN _ ' IF PGUP THEN SET IX = 19
IX = 19 : _
RETURN
IF IX = 79 THEN _ ' IF END THEN SET IX = 21
IX = 21 : _
RETURN
IF IX = 81 THEN _ ' IF PGDN THEN SET IX = 20
IX = 20 : _
RETURN
IF (IX-58) < 11 THEN _ ' IF F1 THROUGH F10 SET IX = 1
IX = IX-58 : _ ' THROUGH 10 ACCORDINGLY.
RETURN
IF (IX-73) > 10 AND _ ' IF SHIFT-F1 THROUGH SHIFT-F8 THEN
(IX-73) < 19 THEN _ ' SET IX = 11 THROUGH 18
IX = IX - 73 : _ ' ACCORDINGLY.
RETURN
IX = 0
RETURN
'
' *****************************************************************************
' * ROUTINE TO DISPLAY THE PAGE HEADER FOR CONFIG'S DISPLAYS *
' *****************************************************************************
'
24800 CLS
I! = FRE(C$)
COLOR 0,7,0
LOCATE 1,10
PRINT "RBBS-PC CPC15.1 Default Configuration " + CONFIG.VERSION$;
IF F THEN _
GOSUB 24970
COLOR FG,BG,BORDER
PRINT " Page" + STR$(DISPLAYED.PAGE.NUMBER) + " of" + STR$(MAXIMUM.DISPLAYABLE.PAGES)
RETURN
24890 A$ = "Enter parameter # to change, END to update, PgUp/PgDn to scroll:"
24900 LOCATE 24,5
PRINT A$;
X = POS(0) + 2
PRINT STRING$((75-LEN(A$)),32);
LOCATE 24,X
COLOR FG,BG,BORDER
HJ$ = "
I! = FRE(C$)
RETURN
'
' *****************************************************************************
' * ROUTINE TO DISPLAY CONFERENCE MAINTENANCE MODE IN CONFIG'S DISPLAYS *
' *****************************************************************************
'
24970 LOCATE 2,1
PRINT SPACE$(10)
LOCATE 2,10
A$ = "Private"
IF F = 2 THEN _
A$ = "Public"
COLOR 31,0,0
PRINT "(" + A$ + " Conference Maintenance Mode for " + _
MID$(MAIN.MESSAGE.FILE$,1,INSTR(MAIN.MESSAGE.FILE$,"M.DEF")-1) + _
")";
RETURN
'
' *****************************************************************************
' * COMMON SUBROUTINE TO READ THE MESSAGES FILE'S CHECKPOINT RECORD *
' *****************************************************************************
'
30040 OPEN "R",2,MAIN.MESSAGE.FILE$,128 ' <---- read MESSAGES checkpoint record
FIELD 2,128 AS RR$
GET 2,1
CALLS.TODATE! = VAL(MID$(RR$,1,8)) ' 1- 8 = number of last message on system
FIRST.USER.RECORD = VAL(MID$(RR$,52,5)) ' 52- 56 = first rec. of user file
CURRENT.USER.COUNT = VAL(MID$(RR$,57,5)) ' 57- 61 = next avail. user record
HIGHEST.USER.RECORD = VAL(MID$(RR$,62,5)) ' 62- 66 = last rec. of user file
FIRST.MESSAGE.RECORD = VAL(MID$(RR$,68,7)) ' 68- 74 = first rec. of msgs file
NEXT.MESSAGE.RECORD = VAL(MID$(RR$,75,7)) ' 75- 81 = next avail. msgs record
HIGHEST.MESSAGE.RECORD = VAL(MID$(RR$,82,7)) ' 82- 88 = last rec. of msgs file
MAXIMUM.NUMBER.OF.MSGS = VAL(MID$(RR$,89,7)) ' 89- 95 = maximum number of messages
MAXIMUM.NUMBER.OF.NODES = VAL(MID$(RR$,127,2)) '127-128 = maximum number of "nodes"
CLOSE 2
RETURN
'
' *****************************************************************************
' * COMMON ROUTINE TO GET THE LENGTH OF A FILE *
' *****************************************************************************
'
30180 OPEN "R",2,FILE$,128 ' <---- get length of file
FIELD 2,128 AS RR$
UG = LOF(2)/128
CLOSE 2
RETURN
'
' *****************************************************************************
' * COMMON SUBROUTINE TO KEEP STRING SPACE CLEAN AND CLEAR LINE 24 *
' *****************************************************************************
'
50340 I! = FRE(C$)
LOCATE 24,1
PRINT STRING$(79,32);
RETURN
'
' *****************************************************************************
' * COMMON SUBROUTINE TO DISPLAY A MESSAGE ON LINE 24 *
' *****************************************************************************
'
50345 GOSUB 50340
LOCATE 24,5
PRINT XX$;
RETURN
'
' *****************************************************************************
' * COMMON SUBROUTINE TO BEEP AT THE SYSOP *
' *****************************************************************************
'
60380 FOR I = 1 TO 3
SOUND 1000*I,1
NEXT
RETURN
END SUB
' $SUBTITLE: 'CNFGINIT - subroutine to initialize CONFIG's constants'
' $PAGE
'
' SUBROUTINE NAME -- CNFGINIT
'
' INPUT PARAMETERS -- NONE
'
' OUTPUT PARAMETERS -- CONFIG'S CONSTANTS INITIALIZED
'
' SUBROUTINE PURPOSE -- TO INITIALIZE THE CONSTANTS USED BY CONFIG
'
60385 SUB CNFGINIT STATIC
'
' *****************************************************************************
' * INITALIZE ALL VARIABLES IF A .DEF FILE DOESN'T AREADY EXIST *
' *****************************************************************************
'
D$ = DD$ + ":"
FALSE = 0
TRUE = NOT FALSE
SYSOP.SECURITY.LEVEL = 10
ACT.MNTHS.B4.DELETING = 1
ACTIVE.BULLETINS = 6
ALWAYS.STREW.TO$ = ""
ANS.MENU$ = D$ + "MENUA"
ASK.IDENTITY = FALSE
BG = 0
BORDER = 0
BUFFER.SIZE = 128
BULLETIN.MENU$ = "BULLET"
BULLETIN.PREFIX$ = "BULLET"
BULLETINS.OPTIONAL = TRUE
C$ = ""
CALLERS.FILE$ = D$ + "CALLERS"
CODE.TYPE = FALSE
COM.PORT$ = "COM1"
COMMANDS.BETWEEN.RINGS = FALSE
COMMANDS.IN.PROMPT = TRUE
COMMENTS.AS.MESSAGES = FALSE
COMMENTS.FILE$ = D$ + "COMMENTS"
COMPUTER.TYPE = 0
CONFERENCE.MENU$ = D$ + "CONFENCE"
CONFERENCE.VIEWER.SEC.LVL = 0
CONFIG.VERSION$ = "(Version 3.02)" ' CPC15-1B
DEFAULT.CATEGORY.CODE$ = "UC "
DAYS.IN.SUBSCRIPTION.PERIOD = 365
DAYS.TO.WARN = 60
DIR.CATEGORY.FILE$ = D$ + "DIR.CAT"
DEFAULT.MACHINE.TYPE$ = "IBMPC"
DEFAULT.SECURITY.LEVEL = 5
DIRECTORY.EXTENTION$ = "DIR"
DIRECTORY.PATH$ = D$
DISK.FOR.DOS$ = D$
DISKFULL.GO.OFFLINE = TRUE
DNLD.SUB = 0
DOORS.AVAILABLE = FALSE
DOORS.SECURITY.LEVEL = SYSOP.SECURITY.LEVEL
DOORS.TERMINAL.TYPE = 8
DOS.VERSION = 2
DOWNLOAD.DRIVES$ = DD$ + DD$
DOWNLOAD.TO.SUBDIR = FALSE
DRIVE.FOR.BULLETINS$ = DD$
DRIVE.FOR.HELP.FILES$ = DD$
DTR.DROP.DELAY = 3
DUMB.MODEM = FALSE
END.OFFICE.HOURS = 2200
EXPERT.USER = 0
EXPIRED.SECURITY = DEFAULT.SECURITY.LEVEL
EXTENDED.LOGGING = FALSE
FC = 5
FG = 7
FILE.COMMANDS.DEFAULTS$ = "DGLNSUV"
FILE.COMMANDS$ = FILE.COMMANDS.DEFAULTS$
FILE.NOTIFY = FALSE
FILES.FUNCTION$(1,1) = "D)ownload a file "
FILES.FUNCTION$(2,1) = "G)oodbye "
FILES.FUNCTION$(3,1) = "L)ist file directory "
FILES.FUNCTION$(4,1) = "N)ew file search "
FILES.FUNCTION$(5,1) = "S)earch files "
FILES.FUNCTION$(6,1) = "U)pload a file "
FILES.FUNCTION$(7,1) = "V)erbose ARC list "
FILES.FUNCTION$(1,2) = "D"
FILES.FUNCTION$(2,2) = "G"
FILES.FUNCTION$(3,2) = "L"
FILES.FUNCTION$(4,2) = "N"
FILES.FUNCTION$(5,2) = "S"
FILES.FUNCTION$(6,2) = "U"
FILES.FUNCTION$(7,2) = "V"
FILESEC.FILE$ = D$ + "FILESEC"
GB = FC
GLOBAL.COMMANDS.DEFAULTS$ = "H?QX"
GLOBAL.COMMANDS$ = GLOBAL.COMMANDS.DEFAULTS$
GLOBAL.FUNCTION$(1,1) = "H)elp on-line "
GLOBAL.FUNCTION$(2,1) = "?)help on-line (=H) "
GLOBAL.FUNCTION$(3,1) = "Q)uit this part "
GLOBAL.FUNCTION$(4,1) = "X)Expert toggle on/off"
GLOBAL.FUNCTION$(1,2) = "H"
GLOBAL.FUNCTION$(2,2) = "?"
GLOBAL.FUNCTION$(3,2) = "Q"
GLOBAL.FUNCTION$(4,2) = "X"
GO.TO.SHELL = TRUE
HELP$(3) = "HELP03"
HELP$(4) = "HELP04"
HELP$(7) = "HELP07"
HELP$(9) = "HELP09"
HELP.EXTENSION$ = "HLP"
HELP.FILE.PREFIX$ = "HELP0"
HELP.PATH$ = D$
IB = 0
LEN.HASH = 31
LEN.INDIV = 0
LIMIT.DAILY.TIME = FALSE
LIMIT.SEARCH.TO.FMS = FALSE
LOCAL.PASSWORD$ = "RBBS-PC"
MAIN.COMMANDS.DEFAULTS$ = "ABCDEFIJKOPRSTUVW"
MAIN.COMMANDS$ = MAIN.COMMANDS.DEFAULTS$
MAIN.FUNCTION$(1,1) = "A)nswer questionnaire "
MAIN.FUNCTION$(2,1) = "B)ulletins "
MAIN.FUNCTION$(3,1) = "C)omments "
MAIN.FUNCTION$(4,1) = "D)oor subsystem "
MAIN.FUNCTION$(5,1) = "E)nter message "
MAIN.FUNCTION$(6,1) = "F)iles subsystem "
MAIN.FUNCTION$(7,1) = "I)nitial welcome "
MAIN.FUNCTION$(8,1) = "J)oin a conference "
MAIN.FUNCTION$(9,1) = "K)ill messages "
MAIN.FUNCTION$(10,1) = "O)perator page "
MAIN.FUNCTION$(11,1) = "P)ersonal mail "
MAIN.FUNCTION$(12,1) = "R)ead messages "
MAIN.FUNCTION$(13,1) = "S)can messages header "
MAIN.FUNCTION$(14,1) = "T)opic msg scan "
MAIN.FUNCTION$(15,1) = "U)tilities subsystem "
MAIN.FUNCTION$(16,1) = "V)iew a conference "
MAIN.FUNCTION$(17,1) = "W)ho's on other nodes "
MAIN.FUNCTION$(1,2) = "A"
MAIN.FUNCTION$(2,2) = "B"
MAIN.FUNCTION$(3,2) = "C"
MAIN.FUNCTION$(4,2) = "D"
MAIN.FUNCTION$(5,2) = "E"
MAIN.FUNCTION$(6,2) = "F"
MAIN.FUNCTION$(7,2) = "I"
MAIN.FUNCTION$(8,2) = "J"
MAIN.FUNCTION$(9,2) = "K"
MAIN.FUNCTION$(10,2) = "O"
MAIN.FUNCTION$(11,2) = "P"
MAIN.FUNCTION$(12,2) = "R"
MAIN.FUNCTION$(13,2) = "S"
MAIN.FUNCTION$(14,2) = "T"
MAIN.FUNCTION$(15,2) = "U"
MAIN.FUNCTION$(16,2) = "V"
MAIN.FUNCTION$(17,2) = "W"
MAIN.MESSAGE.BACKUP$ = D$ + "MESSAGES.BAK"
MAIN.MESSAGE.FILE$ = D$ + "MESSAGES"
MAIN.USER.FILE$ = D$ + "USERS"
MASTER.DIRECTORY.NAME$ = ""
MAX.ALLOWED.MSGS.FRM.DEF = 5
MAX.DESC.LEN = 40
MAX.MESSAGE.LINES = 19
MAX.USR.FILE.SIZE.FRM.DEF = 16
MAXD = SYSOP.SECURITY.LEVEL
MAXIMUM.DISPLAYABLE.PAGES = 13 ' CPC15-1B
MAXIMUM.PASSWORD.CHANGES = 3
MAXIMUM.VIOLATIONS = 5
MAXIMUM.NUMBER.OF.NODES = 1
MENU$(1) = D$ + "MENU1"
MENU$(2) = D$ + "MENU2"
MENU$(3) = D$ + "MENU3"
MENU$(4) = D$ + "MENU4"
MENU$(5) = D$ + "MENU5"
MESSAGE.REMINDER = TRUE
MIN.SEC.TO.VIEW = DEFAULT.SECURITY.LEVEL
MINIMUM.LOGON.SECURITY = 0
MINIMUM.SECURITY.FOR.TEMP.PASSWORD = 5
MINUTES.PER.SESSION! = 72
MLCOM = FALSE
MM = 5
MNP.SUPPORT = FALSE
MO$ = DD$
MODEM.ANSWER.COMMAND$ = "ATQ0X1V1A"
MODEM.COMMAND.DELAY.TIME = 1
MODEM.COUNT.RINGS.COMMAND$ = "ATS1?"
MODEM.GO.OFFHOOK.COMMAND$ = "ATQ1E1H1M0"
MODEM.INIT.BAUD$ = "300"
MODEM.INIT.COMMAND$ = "ATM0Q1S2=255S10=30E0S0=0Q0X1" ' CPC15-1B
MODEM.INIT.WAIT.TIME = 2
MODEM.RESET.COMMAND$ = "ATZ"
MUSIC = FALSE
NET.MAIL$ = "NONE" ' CPC15-1B
NETWORK.TYPE = 0
NETWORK.TYPE$ = "IBM's DOS"
NEW.FILES.CHECK = FALSE
NEWUSER.FILE$ = D$ + "NEWUSER"
NEWUSER.SETS.DEFAULTS = TRUE
OMIT.MAIN.DIRECTORY$ = "NO"
OMIT.UPLOAD.DIRECTORY$ = "NO"
OVERWRITE.SECURITY.LEVEL = SYSOP.SECURITY.LEVEL
PAGE.LENGTH = 23
PAGING.PRINTER.SUPPORT$ = ". "
PASSWORD.FILE$ = D$ + "PASSWRDS"
PCJR = 0
PROTOCOL.PATH$ = D$
PROMPT.BELL = 0
PROMPT.HASH$ = "Name"
PROMPT.INDIV$ = ""
RBBS.BAT$ = D$ + "RBBS.BAT"
RBBS.NAME$ = "RBBS-PC"
RCTTY.BAT$ = D$ + "RCTTY.BAT"
RECYCLE.TO.DOS = 0
RECYCLE.TO.DOS$ = "INTERNAL"
REDIRECT.IO.METHOD = TRUE
REMEMBER.NEW.USERS = TRUE
REMIND.FILE.TRANSFERS = FALSE
REMIND.PROFILE = FALSE
REQUIRE.NON.ASCII = TRUE
REQUIRED.QUESTIONNAIRE$ = "NONE"
REQUIRED.RINGS = 1
RESTRICT.BAUD = FALSE
RESTRICT.BY.DATE = FALSE
RESTRICT.VALID.CMDS = FALSE
RTS$ = "NO" ' CPC15-1B
SEC.LVL.EXEMPT.FRM.PURGING = SYSOP.SECURITY.LEVEL
SF = SYSOP.SECURITY.LEVEL
SHOOT.YOURSELF = FALSE
SHOW.SECTION = TRUE
SL.CATEGORIZE.UPLOADS = SYSOP.SECURITY.LEVEL
START.HASH = 1
START.INDIV = 0
START.OFFICE.HOURS = 800
SURVIVE.NOUSER.ROOM = FALSE
SYSOP.COMMANDS.DEFAULTS$ = "1234567"
SYSOP.COMMANDS$ = SYSOP.COMMANDS.DEFAULTS$
SYSOP.FUNCTION$(1,1) = " 1 List comments "
SYSOP.FUNCTION$(2,1) = " 2 List CALLERS log "
SYSOP.FUNCTION$(3,1) = " 3 Recover a message "
SYSOP.FUNCTION$(4,1) = " 4 Erase comments "
SYSOP.FUNCTION$(5,1) = " 5 User maintenance "
SYSOP.FUNCTION$(6,1) = " 6 Toggle Page bell "
SYSOP.FUNCTION$(7,1) = " 7 Exit to DOS "
SYSOP.FUNCTION$(1,2) = " 1"
SYSOP.FUNCTION$(2,2) = " 2"
SYSOP.FUNCTION$(3,2) = " 3"
SYSOP.FUNCTION$(4,2) = " 4"
SYSOP.FUNCTION$(5,2) = " 5"
SYSOP.FUNCTION$(6,2) = " 6"
SYSOP.FUNCTION$(7,2) = " 7"
SYSOP.FIRST.NAME$ = "TOM"
SYSOP.LAST.NAME$ = "MACK"
SYSOP.MENU.SECURITY.LEVEL = SYSOP.SECURITY.LEVEL
SYSOP.PASSWORD.1$ = "RBBS-PC"
SYSOP.PASSWORD.2$ = "CPC15"
TIME.TO.DROP.TO.DOS = -1
TRASHCAN.FILE$ = D$ + "TRASHCAN"
TURN.PRINTER.OFF = FALSE
TURBO.RBBS = TRUE
UE = 5
FMS.DIRECTORY$ = ""
UPCAT.HELP$ = "UPCAT"
UPLOAD.DIRECTORY$ = "99"
UPLOAD.PATH$ = D$
UPLOAD.SUBDIR$ = ""
UPLOAD.TIME.FACTOR! = 0
UPLOAD.TO.SUBDIR = FALSE
USE.COLOR = FALSE
USE.EXTERNAL.XMODEM = FALSE
UTIL.COMMANDS.DEFAULTS$ = "BCFGLMPRSTU"
UTIL.COMMANDS$ = UTIL.COMMANDS.DEFAULTS$
UTILITY.FUNCTION$(1,1) = "B)aud rate "
UTILITY.FUNCTION$(2,1) = "C)lock (time) "
UTILITY.FUNCTION$(3,1) = "F)ile x-fer protocol "
UTILITY.FUNCTION$(4,1) = "G)raphics "
UTILITY.FUNCTION$(5,1) = "L)ines per page "
UTILITY.FUNCTION$(6,1) = "M)sg margin setting "
UTILITY.FUNCTION$(7,1) = "P)assword change "
UTILITY.FUNCTION$(8,1) = "R)eview defaults "
UTILITY.FUNCTION$(9,1) = "S)tatistics "
UTILITY.FUNCTION$(10,1) = "T)oggle "
UTILITY.FUNCTION$(11,1) = "U)ser log scan "
UTILITY.FUNCTION$(1,2) = "B"
UTILITY.FUNCTION$(2,2) = "C"
UTILITY.FUNCTION$(3,2) = "F"
UTILITY.FUNCTION$(4,2) = "G"
UTILITY.FUNCTION$(5,2) = "L"
UTILITY.FUNCTION$(6,2) = "M"
UTILITY.FUNCTION$(7,2) = "P"
UTILITY.FUNCTION$(8,2) = "R"
UTILITY.FUNCTION$(9,2) = "S"
UTILITY.FUNCTION$(10,2) = "T"
UTILITY.FUNCTION$(11,2) = "U"
WAIT.BEFORE.DISCONNECT = 180
WELCOME.FILE$ = D$ + "WELCOME"
WELCOME.INTERRUPTABLE = TRUE
WILL.SUBDIRS.B.USED = FALSE
FOR I = 1 TO NUM.SYSOP
SYSOP.FUNCTION(I) = SF
NEXT
FOR I = 1 TO NUM.MAIN
MAIN.FUNCTION(I) = MM
NEXT
FOR I = 1 TO NUM.FILES
FILES.FUNCTION(I) = FC
NEXT
FOR I = 1 TO NUM.UTILITY
UTILITY.FUNCTION(I) = UE
NEXT
FOR I = 1 TO NUM.GLOBAL
GLOBAL.FUNCTION(I) = GB
NEXT
END SUB
' $SUBTITLE: 'ASKRO - ask a question at a specific row'
' $PAGE
'
' SUBROUTINE NAME -- ASKRO
'
' INPUT PARAMETERS -- PARAMETER MENANING
' ANS$ STRING TO PUT THE ANSWER IN
' STRNG$ STRING CONTAINING THE QUESTION
' RO ROW TO ASK THE QUESTION ON
'
' OUTPUT PARAMETERS -- ANS$ RESPONSE FROM THE KEYBOARD
'
' SUBROUTINE PURPOSE -- TO ASK A QUESTION ON THE PC'S DISPLAY AT A
' SPECIFIC ROW
'
SUB ASKRO (STRNG$,RO,ANS$) STATIC
61100 LOCATE RO,1
PRINT SPACE$(79);
LOCATE RO,5
PRINT STRNG$;" ";
LINE INPUT;ANS$
END SUB
' $SUBTITLE: 'GETNUMYN - get a TRUE-FALSE answer to a YES OR NO question'
' $PAGE
'
' SUBROUTINE NAME -- GETNUMYN
'
' INPUT PARAMETERS -- PARAMETER MENANING
' STRNG$ STRING CONTAINING THE QUESTION
'
' OUTPUT PARAMETERS -- ANS Returned value - -1 IF yes, 0 IF no
'
' SUBROUTINE PURPOSE -- TO ASK A QUESTION ON THE PC'S DISPLAY AND GET A
' YES OR NO ANSWER CONVERTED TO TRUE/FALSE
'
SUB GETNUMYN (STRNG$,ANS) STATIC
CALL GETYESNO (STRNG$,ANS$)
ANS = FNYESNO (ANS$)
END SUB
' $SUBTITLE: 'GETNUMYN - Ask a YES OR NO question'
' $PAGE
'
' SUBROUTINE NAME -- GETYESNO
'
' INPUT PARAMETERS -- PARAMETER MENANING
' ANS$ STRING TO PUT THE ANSWER IN
' STRNG$ STRING CONTAINING THE QUESTION
'
' OUTPUT PARAMETERS -- ANS$ RESPONSE FROM THE KEYBOARD
'
' SUBROUTINE PURPOSE -- TO ASK A QUESTION ON THE PC'S DISPLAY AND GET A
' YES OR NO ANSWER
'
SUB GETYESNO (STRNG$,ANS$) STATIC
61200 CALL ASKRO (STRNG$+" (YES or NO)",24,HJ$)
L = LEN(HJ$)
IF L<1 OR L>3 THEN _
GOTO 61207
CALL ALLCAPS(HJ$)
X = INSTR("NY",LEFT$(HJ$,1))
ON X GOTO 61210,61212
61207 BEEP
GOTO 61200
61210 ANS$ = "NO"
EXIT SUB
61212 ANS$ = "YES"
EXIT SUB
END SUB
' $SUBTITLE: 'ALLCAPS - convert a sting into all capital letters'
' $PAGE
'
' SUBROUTINE NAME -- ALLCAPS
'
' INPUT PARAMETERS -- PARAMETER MENANING
' STRNG$ STRING CONTAINING THE QUESTION
'
' OUTPUT PARAMETERS -- STRNG$ CAPITALIZED STRING
'
' SUBROUTINE PURPOSE -- TO CAPITALIZE A STRING
'
SUB ALLCAPS (STRNG$) STATIC
FOR Z = 1 TO LEN(STRNG$)
MID$(STRNG$,Z,1) = CHR$(ASC(MID$(STRNG$,Z,1)) + _
32*(ASC(MID$(STRNG$,Z,1))>96))
NEXT
END SUB
' $SUBTITLE: 'ASKUPOS - find the unique user field for USERS'
' $PAGE
'
' SUBROUTINE NAME -- ASKUPOS
'
' INPUT PARAMETERS -- PARAMETER MENANING
' HDR$ HEADER
' BEGIN.COL BEGINNING COLUMN OF FIELD
' FIELD.LEN LENGTH OF FIELD IN USER'S RECORD
' PRMPT$ PROMPT TO GIVE FOR FIELD
'
' OUTPUT PARAMETERS -- ABOVE INPUTS UPDATED WITH USER'S RESPONSES
'
' SUBROUTINE PURPOSE -- TO ASK THE SYSOP WHAT UNIQUE FIELD IN THE USERS
' RECORD IS TO BE ASKED FOR AT LOGON
'
SUB ASKUPOS (HDR$,BEGIN.COL,FIELD.LEN,PRMPT$) STATIC
CLS
LOCATE 3,20
PRINT HDR$;
61300 LOCATE 6,5
PRINT "1. BEGINNING COLUMN in USERS file";TAB(44);STR$(BEGIN.COL);" "; ' CPC15-1B
LOCATE 8,5
PRINT "2. Number of CHARACTERS to use";TAB(44);STR$(FIELD.LEN);" ";
LOCATE 10,5
PRINT "3. PROMPT to display to callers";TAB(45);PRMPT$;SPACE$(34-LEN(PRMPT$));
61310 CALL ASKRO ("Select option to change (1-3, ENTER to end)",24,X$)
IF X$ = "" THEN _
EXIT SUB
X = VAL(X$)
IF X < 1 OR X > 3 THEN _
GOTO 61310
ON X GOTO 61320,61330,61340
61320 CALL ASKRO ("New BEGINNING COLUMN",24,HJ$)
IF HJ$ = "" THEN _
GOTO 61320
X = VAL(HJ$)
IF X < 0 OR X > 128 THEN _
GOTO 61320
BEGIN.COL = X
GOTO 61300
61330 CALL ASKRO ("New # CHARACTERS to use",24,HJ$)
IF HJ$ = "" THEN _
GOTO 61330
X = VAL(HJ$)
IF X < 0 OR X > 31 THEN _
GOTO 61330
FIELD.LEN = X
GOTO 61300
61340 CALL ASKRO ("New PROMPT",24,HJ$)
IF LEN(HJ$) > 34 THEN _
GOTO 61340
PRMPT$ = HJ$
GOTO 61300
END SUB
' $SUBTITLE: 'ANYNUMBER - input any numeric value'
' $PAGE
'
' SUBROUTINE NAME -- ANYNUMBER
'
' INPUT PARAMETERS -- PARAMETER MENANING
' PRMPT$ Prompt
'
' OUTPUT PARAMETERS -- RETURNED.VALUE! Value returned
'
' SUBROUTINE PURPOSE -- To get a numeric value
'
SUB ANYNUMBER (PRMPT$,RETURNED.VALUE!) STATIC
61400 CALL ASKRO (PRMPT$,24,HJ$)
RETURNED.VALUE! = VAL(HJ$)
END SUB
' $SUBTITLE: 'ANYINTEGER - input any integer value'
' $PAGE
'
' SUBROUTINE NAME -- ANYINTEGER
'
' INPUT PARAMETERS -- PARAMETER MENANING
' PRMPT$ Prompt
'
' OUTPUT PARAMETERS -- RETURNED.VALUE Value returned
'
' SUBROUTINE PURPOSE -- To get an integer value
'
SUB ANYINTEGER (PRMPT$,RETURNED.VALUE) STATIC
61450 CALL ANYNUMBER (PRMPT$,RETURNED.VALUE!)
IF RETURNED.VALUE! > 32000.0 OR RETURNED.VALUE! < -32000.0 THEN_
BEEP : _
GOTO 61450
RETURNED.VALUE = RETURNED.VALUE!
END SUB
' $SUBTITLE: 'MMINTEGER - input any integer value with range check'
' $PAGE
'
' SUBROUTINE NAME -- MMINTEGER
'
' INPUT PARAMETERS -- PARAMETER MENANING
' PRMPT$ Prompt
' MIN Minmum value inclusive
' MAX Maximum value inclusive
'
' OUTPUT PARAMETERS -- RETURNED.VALUE Value returned
'
' SUBROUTINE PURPOSE -- To get an integer value within a range
'
SUB MMINTEGER (PRMPT$,MIN,MAX,RETURNED.VALUE) STATIC
61500 CALL ANYINTEGER (PRMPT$,RETURNED.VALUE)
IF RETURNED.VALUE < MIN OR RETURNED.VALUE > MAX THEN _
BEEP : _
GOTO 61500
END SUB
' $SUBTITLE: 'FINDFILE - Determine whether a file exists'
' $PAGE
'
' SUBROUTINE NAME -- FINDFILE
'
' INPUT PARAMETERS -- PARAMETER MENANING
' FILNAME$ File to look for
' FEXISTS Whether file exists
'
' OUTPUT PARAMETERS -- RETURNED.VALUE Value returned
'
' SUBROUTINE PURPOSE -- Determine whether passed file FILNAME$ exists
' Return true or false in FEXISTS
'
SUB FINDFILE (FILNAME$,FEXISTS) STATIC
61600 CALL RBBSFIND (FILNAME$,Z,Y,M,D)
FEXISTS = (Z = 0)
END SUB
' $SUBTITLE: 'CHKFMSDIR - Validate structure of FMS directory'
' $PAGE
'
' SUBROUTINE NAME -- CHKFMSDIR
'
' INPUT PARAMETERS -- PARAMETER MENANING
' FMSDIR$ Name of FMS Directory
' LINELEN Proper length of Lines
' (excluding CR/LF at end)
' FMS.DIRCAT$ Category file for FMS
'
' OUTPUT PARAMETERS -- RETURNED.VALUE Value returned
'
' SUBROUTINE PURPOSE -- Determine whether passed file FILNAME$ exists
' Return true or false in FEXISTS
'
61700 SUB CHKFMSDIR (FMSDIR$,LINELEN,FMS.DIRCAT$) STATIC
DIM CAT.CODE$(99)
CLS
LOCATE 5,20
PRINT "Checking FMS file ";FMSDIR$;
NLINES = 0
LOCATE 7,27
PRINT "Line #";
LOCATE 9,20
COLOR 0,7
PRINT " Last Line with an ERROR ";
LOCATE 12,28
PRINT " Last ERROR ";
COLOR 7,0
NCATS = 0
CALL FINDFILE (FMS.DIRCAT$,FEXISTS)
IF FEXISTS THEN _
NCATS = 1:_
CAT.CODE$(1) = "***":_
OPEN FMS.DIRCAT$ FOR INPUT AS #2 : _
WHILE NOT EOF(2) AND NCATS < UBOUND(CAT.CODE$) :_
NCATS = NCATS + 1:_
INPUT #2,X$,Y$,X$:_
CAT.CODE$(NCATS)= Y$:_
WEND:_
CLOSE 2
GO.ON = -1
CALL FINDFILE (FMSDIR$,FEXISTS)
IF NOT FEXISTS THEN _
LOCATE 6,25 : _
PRINT "File not found"; : _
GOTO 61750
OPEN FMSDIR$ FOR INPUT AS #2
WHILE NOT EOF(2) AND GO.ON
NLINES = NLINES + 1
LINE INPUT #2, A$
L = LEN(A$)
LOCATE 7,36
PRINT NLINES;
IF L > LINELEN THEN _
CALL HANDERR (A$,NLINES,"Too LONG: has"+STR$(L)+" chars but should have"+STR$(LINELEN),GO.ON):_
IF NOT GO.ON THEN 61740
IF L < LINELEN THEN _
CALL HANDERR (A$,NLINES,"Too SHORT: has"+STR$(L)+" chars but should have"+STR$(LINELEN),GO.ON):_
IF NOT GO.ON THEN 61740
IF L > 30 THEN _
X$ = MID$(A$,24,2)+MID$(A$,27,2)+MID$(A$,30,2) : _
I = 1 : _
WHILE I < 7 AND INSTR("0123456789",MID$(X$,I,1))>0 : _
I = I+1: _
WEND: _
IF I < 7 THEN _
CALL HANDERR (A$,NLINES,"INVALID CHARACTER <"+MID$(X$,I,1)+"> in date field",GO.ON) : _
IF NOT GO.ON THEN 61740
I = 1
Y$ = MID$(A$,L-2)
CALL REMOVE (Y$," ")
WHILE I <= NCATS AND Y$ <> CAT.CODE$(I)
I = I+1
WEND
IF I > NCATS THEN _
CALL HANDERR (A$,NLINES,"Category code <"+Y$+"> NOT IN "+FMS.DIRCAT$,GO.ON)
61740 WEND
61750 CLOSE 2
IF GO.ON THEN _
LOCATE 15,15:_
BEEP:_
CALL ASKRO (" Done checking. Press [ENTER] to continue",20,ANS$)
END SUB
SUB HANDERR (ERRLINE$,ERRL,ERRMES$,GO.ON) STATIC
LOCATE 10,1
PRINT SPACE$(80);
LOCATE 10,1
PRINT ERRLINE$;
LOCATE 9,45
PRINT STR$(ERRL);
LOCATE 13,1
PRINT SPACE$(79);
L = LEN(ERRMES$)
IF L > 68 THEN _
STRT = 1_
ELSE _
STRT = (70-L)/2
LOCATE 13,STRT
PRINT ERRMES$;
CALL ASKRO (" CONTINUE checking (Y/N,[ENTER]=Y) ",20,ANS$)
IF ANS$ = "" THEN ANS$ = "Y"
CALL ALLCAPS (ANS$)
GO.ON = FNYESNO (ANS$)
END SUB
' $SUBTITLE: 'REMOVE - subroutine to delete a string from within a string'
' $PAGE
'
' SUBROUTINE NAME -- REMOVE
'
' INPUT PARAMETERS -- PARAMETER MEANING
' BADSTRING$ STRING CONTAINING CHARACTERS
' TO BE DELETED FROM "L$"
' L$ STRING TO BE ALTERED
'
' OUTPUT PARAMETERS -- L$ WITH THE CHARACTERS IN
' "BADSTRING#" DELETED FROM IT
'
' SUBROUTINE PURPOSE -- TO REMOVE ALL INSTANCES OF THE CHARACTERS IN
' "BADSTRING$" FROM "L$"
'
SUB REMOVE (L$,BADSTRNG$) STATIC
61800 J = 0
FOR I=1 TO LEN(L$)
IF INSTR(BADSTRNG$,MID$(L$,I,1)) = 0 THEN_
J = J+1:_
MID$(L$,J,1) = MID$(L$,I,1)
NEXT I
L$ = LEFT$(L$,J)
END SUB